﻿using System;
using System.ComponentModel;
using Jay.Sc2.Bof.Lib.State;

namespace Jay.Sc2.Bof.Windows
{
	public class TerranStateProxy : StateProxy
	{
		private TerranState m_State;
		[Browsable(false)]
		public override IState State { get { return m_State; } }
		public TerranStateProxy(TerranState state) { m_State = state; }
		[CategoryAttribute("Goal")]
		public override TimeSpan Time { get { return new TimeSpan(0, 0, m_State.Time); } set { m_State.Time = (int)(value.TotalSeconds); } }
		[CategoryAttribute("Informations")]
		public override int Food { get { return m_State.Food; } }
		[CategoryAttribute("Informations")]
		public int Army { get { return m_State.Army; } }
		[CategoryAttribute("Informations")]
		public override int Supply { get { return m_State.Supply; } }
		[CategoryAttribute("Informations")]
		public override int MineralsIncome { get { return m_State.MineralsIncome; } }
		[CategoryAttribute("Informations")]
		public override int WorkersOnMinerals { get { return m_State.WorkersOnMinerals; } }
		[CategoryAttribute("Informations")]
		public override int WorkersOnGas { get { return m_State.WorkersOnGas; } }
		[CategoryAttribute("Informations")]
		public override int GasIncome { get { return m_State.GasIncome; } }
		[CategoryAttribute("Worker")]
		public int SCV { get { return m_State.SCV; } set { m_State.SCV = value; } }
		[CategoryAttribute("Unit")]
		public int Marine { get { return m_State.Marine; } set { m_State.Marine = value; } }
		[CategoryAttribute("Unit")]
		public int Marauder { get { return m_State.Marauder; } set { m_State.Marauder = value; } }
		[CategoryAttribute("Unit")]
		public int Thor { get { return m_State.Thor; } set { m_State.Thor = value; } }
		[CategoryAttribute("Structure")]
		public int Refinery { get { return m_State.Refinery.Count; } set { m_State.Refinery.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Medivac { get { return m_State.Medivac; } set { m_State.Medivac = value; } }
		[CategoryAttribute("Unit")]
		public int SiegeTank { get { return m_State.SiegeTank; } set { m_State.SiegeTank = value; } }
		[CategoryAttribute("Upgrade")]
		public bool SiegeTech { get { return m_State.SiegeTech.Available; } set { m_State.SiegeTech.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool Stimpack { get { return m_State.Stimpack.Available; } set { m_State.Stimpack.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ConcussiveShells { get { return m_State.ConcussiveShells.Available; } set { m_State.ConcussiveShells.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool CombatShield { get { return m_State.CombatShield.Available; } set { m_State.CombatShield.Available = value; } }
		[CategoryAttribute("Goal")]
		public override int Minerals { get { return (int)m_State.Minerals; } set { m_State.Minerals = value; } }
		[CategoryAttribute("Goal")]
		public override int Gas { get { return (int)m_State.Gas; } set { m_State.Gas = value; } }
		[CategoryAttribute("Structure")]
		public int Armory { get { return (int)m_State.Armory.Count; } set { m_State.Armory.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Banshee { get { return m_State.Banshee; } set { m_State.Banshee = value; } }
		[CategoryAttribute("Structure")]
		public int Barracks { get { return m_State.Barracks.Count; } set { m_State.Barracks.Count = value; } }
		[CategoryAttribute("Structure")]
		public int BarracksReactor { get { return m_State.BarracksReactor.Count; } set { m_State.BarracksReactor.Count = value; } }
		[CategoryAttribute("Structure")]
		public int BarracksTechLab { get { return m_State.BarracksTechLab.Count; } set { m_State.BarracksTechLab.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Battlecruiser { get { return (int)m_State.Battlecruiser; } set { m_State.Battlecruiser = value; } }
		[CategoryAttribute("Upgrade")]
		public bool BehemothReactor { get { return m_State.BehemothReactor.Available; } set { m_State.BehemothReactor.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool BuildingArmor { get { return m_State.BuildingArmor.Available; } set { m_State.BuildingArmor.Available = value; } }
		[CategoryAttribute("Structure")]
		public int Bunker { get { return m_State.Bunker.Count; } set { m_State.Bunker.Count = value; } }
		[CategoryAttribute("Upgrade")]
		public bool CaduceusReactor { get { return m_State.CaduceusReactor.Available; } set { m_State.CaduceusReactor.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool CloakingField { get { return m_State.CloakingField.Available; } set { m_State.CloakingField.Available = value; } }
		[CategoryAttribute("Structure")]
		public int CommandCenter { get { return m_State.CommandCenter.Count; } set { m_State.CommandCenter.Count = value; } }
		[CategoryAttribute("Structure")]
		public int OrbitalCommand { get { return m_State.OrbitalCommand.Count; } set { m_State.OrbitalCommand.Count = value; } }
		[CategoryAttribute("Structure")]
		public int PlanetaryFortress { get { return m_State.PlanetaryFortress.Count; } set { m_State.PlanetaryFortress.Count = value; } }
		[CategoryAttribute("Structure")]
		public int Factory { get { return m_State.Factory.Count; } set { m_State.Factory.Count = value; } }
		[CategoryAttribute("Structure")]
		public int FactoryReactor { get { return m_State.FactoryReactor.Count; } set { m_State.FactoryReactor.Count = value; } }
		[CategoryAttribute("Structure")]
		public int FactoryTechLab { get { return m_State.FactoryTechLab.Count; } set { m_State.FactoryTechLab.Count = value; } }
		[CategoryAttribute("Structure")]
		public int Starport { get { return m_State.Starport.Count; } set { m_State.Starport.Count = value; } }
		[CategoryAttribute("Structure")]
		public int StarportReactor { get { return m_State.StarportReactor.Count; } set { m_State.StarportReactor.Count = value; } }
		[CategoryAttribute("Structure")]
		public int StarportTechLab { get { return m_State.StarportTechLab.Count; } set { m_State.StarportTechLab.Count = value; } }
		[CategoryAttribute("Structure")]
		public int SupplyDepot { get { return m_State.SupplyDepot.Count; } set { m_State.SupplyDepot.Count = value; } }
		[CategoryAttribute("Upgrade")]
		public bool CorvidReactor { get { return m_State.CorvidReactor.Available; } set { m_State.CorvidReactor.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool DurableMaterials { get { return m_State.DurableMaterials.Available; } set { m_State.DurableMaterials.Available = value; } }
		[CategoryAttribute("Structure")]
		public int EngineeringBay { get { return m_State.EngineeringBay.Count; } set { m_State.EngineeringBay.Count = value; } }
		[CategoryAttribute("Structure")]
		public int FusionCore { get { return m_State.FusionCore.Count; } set { m_State.FusionCore.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Ghost { get { return m_State.Ghost; } set { m_State.Ghost = value; } }
		[CategoryAttribute("Structure")]
		public int GhostAcademy { get { return m_State.GhostAcademy.Count; } set { m_State.GhostAcademy.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Hellion { get { return m_State.Hellion; } set { m_State.Hellion = value; } }
		[CategoryAttribute("Upgrade")]
		public bool HiSecAutoTracking { get { return m_State.HiSecAutoTracking.Available; } set { m_State.HiSecAutoTracking.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryArmor1 { get { return m_State.InfantryArmor1.Available; } set { m_State.InfantryArmor1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryArmor2 { get { return m_State.InfantryArmor2.Available; } set { m_State.InfantryArmor2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryArmor3 { get { return m_State.InfantryArmor3.Available; } set { m_State.InfantryArmor3.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryWeapons1 { get { return m_State.InfantryWeapons1.Available; } set { m_State.InfantryWeapons1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryWeapons2 { get { return m_State.InfantryWeapons2.Available; } set { m_State.InfantryWeapons2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfantryWeapons3 { get { return m_State.InfantryWeapons3.Available; } set { m_State.InfantryWeapons3.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool InfernalPreIgniter { get { return m_State.InfernalPreIgniter.Available; } set { m_State.InfernalPreIgniter.Available = value; } }
		[CategoryAttribute("Structure")]
		public int MissileTurret { get { return m_State.MissileTurret.Count; } set { m_State.MissileTurret.Count = value; } }
		[CategoryAttribute("Upgrade")]
		public bool MoebiusReactor { get { return m_State.MoebiusReactor.Available; } set { m_State.MoebiusReactor.Available = value; } }
		[CategoryAttribute("Unit")]
		public int Mules { get { return m_State.Mules; } set { m_State.Mules = value; } }
		[CategoryAttribute("Upgrade")]
		public bool NeosteelFrames { get { return m_State.NeosteelFrames.Available; } set { m_State.NeosteelFrames.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool NitroPacks { get { return m_State.NitroPacks.Available; } set { m_State.NitroPacks.Available = value; } }
		[CategoryAttribute("Special")]
		public int Nuke { get { return m_State.Nuke; } set { m_State.Nuke = value; } }
		[CategoryAttribute("Upgrade")]
		public bool PersonalCloaking { get { return m_State.PersonalCloaking.Available; } set { m_State.PersonalCloaking.Available = value; } }
		[CategoryAttribute("Unit")]
		public int Raven { get { return m_State.Raven; } set { m_State.Raven = value; } }
		[CategoryAttribute("Unit")]
		public int Reaper { get { return m_State.Reaper; } set { m_State.Reaper = value; } }
		[CategoryAttribute("Upgrade")]
		public bool SeekerMissile { get { return m_State.SeekerMissile.Available; } set { m_State.SeekerMissile.Available = value; } }
		[CategoryAttribute("Structure")]
		public int SensorTower { get { return m_State.SensorTower.Count; } set { m_State.SensorTower.Count = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipPlating1 { get { return m_State.ShipPlating1.Available; } set { m_State.ShipPlating1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipPlating2 { get { return m_State.ShipPlating2.Available; } set { m_State.ShipPlating2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipPlating3 { get { return m_State.ShipPlating3.Available; } set { m_State.ShipPlating3.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipWeapons1 { get { return m_State.ShipWeapons1.Available; } set { m_State.ShipWeapons1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipWeapons2 { get { return m_State.ShipWeapons2.Available; } set { m_State.ShipWeapons2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool ShipWeapons3 { get { return m_State.ShipWeapons3.Available; } set { m_State.ShipWeapons3.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool StrikeCannon { get { return m_State.StrikeCannon.Available; } set { m_State.StrikeCannon.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehiclePlating1 { get { return m_State.VehiclePlating1.Available; } set { m_State.VehiclePlating1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehiclePlating2 { get { return m_State.VehiclePlating2.Available; } set { m_State.VehiclePlating2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehiclePlating3 { get { return m_State.VehiclePlating3.Available; } set { m_State.VehiclePlating3.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehicleWeapons1 { get { return m_State.VehicleWeapons1.Available; } set { m_State.VehicleWeapons1.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehicleWeapons2 { get { return m_State.VehicleWeapons2.Available; } set { m_State.VehicleWeapons2.Available = value; } }
		[CategoryAttribute("Upgrade")]
		public bool VehicleWeapons3 { get { return m_State.VehicleWeapons3.Available; } set { m_State.VehicleWeapons3.Available = value; } }
		[CategoryAttribute("Unit")]
		public int Viking { get { return m_State.Viking; } set { m_State.Viking = value; } }
		[CategoryAttribute("Upgrade")]
		public bool WeaponRefit { get { return m_State.WeaponRefit.Available; } set { m_State.WeaponRefit.Available = value; } }

	}

}
